package cn.shadowsouls.admin.controller;

import cn.shadowsouls.common.domain.Result;
import cn.shadowsouls.system.bean.CreateVoteReq;
import cn.shadowsouls.system.bean.domain.Vote;
import cn.shadowsouls.system.manger.VoteManger;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 投票操作接口
 *
 * @author shadowsouls
 * @version 1.0
 */
@RestController
@CrossOrigin
@RequestMapping("/")
public class VoteController {

    @Autowired
    VoteManger manger;

    // 获取所有的投票
    @ApiOperation(value = "获取所有的投票")
    @GetMapping("vote/all")
    public Result getAllVote() {
        return manger.getAllVote();
    }

    // todo 根据投票的主键来获取具体投票中的内容
    @ApiOperation(value = "根据voteId来获取具体投票的内容")
    @GetMapping("vote/{id}")
    public Result getVote(@ApiParam(name = "id", value = "投票Id", required = true) @PathVariable Integer id) {
        return manger.getVoteDetail(id);
    }

    // todo 为投票中的某几项增加记数
    @ApiOperation(value = "为投票中的某一项增加计数")
    @GetMapping("addVoteCount/{vcid}")
    public String addVoteCount(@PathVariable String vcid) {
        if (manger.addVoteOptionCount(Integer.valueOf(vcid)))
            return "添加成功";

        return "添加失败";
    }

    // 根据请求携带的凭证获取用户创建的投票
    @ApiOperation(value = "根据header的用户凭证来获取用户创建的投票")
    @GetMapping("getOwnVote/{id}")
    public Result getOwnVote(@PathVariable String id) {
        return manger.getOwnVote(id);
    }

    // 创建一个新的投票
    @ApiOperation(value = "创建一个新的投票")
    @PostMapping("createNewVote")
    public String createNewVote(@RequestHeader String authorCode, @RequestBody CreateVoteReq req) {
        if (manger.createVote(new Vote(req.getVoteName(), req.getIntro()), req.getOptions(), authorCode))
            return "创建成功";
        return "创建失败";
    }


}
